#ifndef _XX_YY_BMOCK_RAW_LEN
#define _XX_YY_BMOCK_RAW_LEN
#include <string>
#include "bmock_raw_len_checker.hpp"

namespace bmock {
	struct raw_len {
		                     raw_len();
		                     raw_len(size_t t_l,size_t i_l,const size_t o_l);
		size_t               get_i_length() const;
		size_t               get_o_length() const;
		size_t               get_T_length() const;
		size_t               get_pad_length() const;
		unsigned char       *put(unsigned char *) const;
		
		const unsigned char *get(const void *,const std::string &name,const raw_len_checker &);
		const unsigned char *get_check(const void *,const std::string &name,const raw_len_checker &);
	private:
		void   check_pad_length(const std::string &name,const raw_len_checker &) const;
		void   check_not_pad_length(const std::string &name,const raw_len_checker &) const;

		unsigned i_len_;  
		unsigned o_len_;  
		unsigned pad_len_;
		unsigned T_len_;  
	};
}
#endif